#include "gtest/gtest.h"
#include "Carte.h"
#include "ColonneCartes.h"
class ColonneCartesTesteur: public ::testing::Test {
public:
	ColonneCartes colonne;
};

TEST_F(ColonneCartesTesteur, constructeursVideOK)
{
	EXPECT_TRUE(true);
}

TEST_F(ColonneCartesTesteur, Initialisation)
{
	Liste<Carte> cartes;

	Carte carte1;
	carte1.asgSorte(Carte::CARREAU);
	carte1.asgValeur(Carte::ROI);

	Carte carte2;
	carte2.asgSorte(Carte::PIQUE);
	carte2.asgValeur(Carte::REINE);

	cartes.ajouter(carte1,1);
	cartes.ajouter(carte2,2);
	colonne.initColonneCartes(cartes);

	EXPECT_EQ(2,colonne.reqListeCartes().taille());

}

TEST_F(ColonneCartesTesteur, ajouterCarte)
{

	Carte carte1;
	carte1.asgSorte(Carte::CARREAU);
	carte1.asgValeur(Carte::ROI);

	Carte carte2;
	carte2.asgSorte(Carte::PIQUE);
	carte2.asgValeur(Carte::REINE);

	colonne.ajoute(carte1);
	colonne.ajoute(carte2);

	EXPECT_EQ(2,colonne.reqListeCartes().taille());
}

TEST_F(ColonneCartesTesteur, supprimerDerniere)
{
	Carte carte1;
	carte1.asgSorte(Carte::CARREAU);
	carte1.asgValeur(Carte::ROI);

	colonne.ajoute(carte1);

	colonne.supprimerDerniereCarte();

	EXPECT_EQ(0,colonne.reqListeCartes().taille());
}

TEST_F(ColonneCartesTesteur, deplacerUnPaquet)
{
	ColonneCartes destination;

	Carte carte1;
	carte1.asgSorte(Carte::CARREAU);
	carte1.asgValeur(Carte::ROI);
	carte1.asgVisible(true);

	Carte carte2;
	carte2.asgSorte(Carte::PIQUE);
	carte2.asgValeur(Carte::REINE);
	carte2.asgVisible(true);

	Carte carte3;
	carte3.asgSorte(Carte::COEUR);
	carte3.asgValeur(Carte::VALET);
	carte3.asgVisible(true);

	colonne.ajoute(carte1);
	colonne.ajoute(carte2);
	colonne.ajoute(carte3);

	colonne.deplacePaquet(destination,3);

	EXPECT_EQ(0,colonne.reqNbCartesVisibles());
	EXPECT_EQ(3,destination.reqListeCartes().taille());
	EXPECT_EQ(3,destination.reqNbCartesVisibles());
}

TEST_F(ColonneCartesTesteur, getNombreDeCartesVisibles)
{
	Carte carte1;
	carte1.asgSorte(Carte::CARREAU);
	carte1.asgValeur(Carte::ROI);

	Carte carte2;
	carte2.asgSorte(Carte::PIQUE);
	carte2.asgValeur(Carte::REINE);
	carte2.asgVisible(true);

	colonne.ajoute(carte1);
	colonne.ajoute(carte2);

	EXPECT_EQ(1,colonne.reqNbCartesVisibles());
}






